/**
 * 
 */
package com.redside.service;

import java.util.List;

import com.redside.model.Complaint;
import com.redside.view.AssociatedComplaint;

/**
 * Business Service Interface to handle communication between web and
 * persistence layer.
 *
 * @author <a href="mailto:pchapman@easystreet.com">Peter Chapman</a>
 */
public interface ComplaintManager extends GenericManager<Complaint, Long>{

	/**
	 * Saves the complaint.
	 */
	public Complaint save(Complaint complaint);
	
	/**
     * @return a List of Complaint objects based
     * on County id
     * @param id the county id
     */
    public List<Complaint>findByCountyId(String id);
    
    /**
     * @return a List of all unverified Complaint objects
     */
    public List<Complaint>findAllUnverified();    
    
    /**
     * @return a List of unverified Complaint objects based
     * on County id
     * @param id the county id
     */
    public List<Complaint>findUnverifiedByCountyId(String id);
    
    /**
     * @return a List of Complaint objects based on County Id 
     * that are in Citation status
     * @param id the county id
     */
    //public List<CitationListView>findCitationComplaintsByCountyId(String Id); 
    
    /**
     * @return a List of BusinessViewComplaint objects based on
     * business id.
     * @param complaint the Complaint.
     */
    //public List<BusinessViewComplaint> findAllForBusinessView(Long businessId);
    
    /**
     * 
     * @return a List of UnsentIRLView objects based on
     * corresponceType (e.g.(business response letter
     * or complainant response letter.
     * @param countyId the county id.
     * @param corresponceTypeId the corresponceTypeId id.
     */
    //public List<UnsentIRLView> findUnsentIRL(String countyId, Long corresponceTypeId, String sql1);
    
    /**
     * 
     * @return a List of UnsentIRLView objects based on
     * corresponceType (e.g.(business response letter
     * or complainant response letter.
     * @param corresponceTypeId the corresponceTypeId id.
     */
    //public List<UnsentIRLView> findUnsentIRL(Long corresponceTypeId, String sql1);    
    
    /**
     * Returns a List of complaints based on business id.
     * Includes the complaint date, status, and IRL sent date
     * @param id the business id
     */
    public List<AssociatedComplaint> findComplaintsForVerifyProcess(Long id);
    
    /**
     * Returns a List of SiteVisitView object based on county id.
     * @param countyId the County id
     */
    //public List<SiteVisitView>siteVisitByCountyId(String countyId);
    
    /**
     * Returns a List of Complaints for remediation based on county id.
     * @param countyId the County id
     */
    //public List<Complaint>findRemediationByCountyId(String countyId);
    
    /**
     * Returns a List of Complaints for remediation based on county id.
     * @param countyId the County id
     */
    //public List<Complaint>findAllRemediations();
    
    /**
     * @return a List of Complaint objects by Id
     */
    public List<Complaint> findByBusinessId(Long businessId);    
}